package demo7;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component
public class Person {
    private String name;

    public Person(){
        System.out.println("1:Person的构造器被调用了");
    }
    public String getName() {
        return name;
    }
@Value("杨硕")
    public void setName(String name) {
    System.out.println("2:setName方法被调用了,初始化了属性");
        this.name = name;
    }
    public void play(){
        System.out.println(name+"哭着在玩过家家，没人陪她");
    }

    /*
    Spring容器提供了针对对象生命周期特定节点的注解：
    @PostConstruct：当对象被Spring初始化完毕后，
    会调用被该注释注解的方法,通过该对象已被容器初始化完毕
     */
    @PostConstruct
    public void init(){
        System.out.println
                ("3：Spring容器将Person对象初始化完毕了，name："+name);
    }

    /**
     * @PreDestroy：当Spring容器关闭时，
     * 会调用内部所有对象被@PreDestroy注释标注的方法，
     * 通知其退离Spring容器管理（销毁前）
     */
    @PreDestroy
    public void preDestroy(){
        System.out.println("4：容器要被关闭了，通知当前对象");
    }
    public void finalize(){
        System.out.println("5：对象被垃圾回收了");
    }



}
